import Fetch from '../api/request'

module.exports = class Monitor {
  /**
   * 监控列表
   * @param {*} ctx
   */
  static async list(ctx) {
    let ret = {}
    await Fetch.get({
      url: '/scheduler-job/alert',
      ctx,
      urlPrefix: 'monitor'
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 规则信息
   * @param {*} ctx
   */
  static async ruleInfo(ctx) {
    let ret = {}
    await Fetch.get({
      url: '/scheduler-job/alert/metaInfo',
      ctx,
      urlPrefix: 'monitor'
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 添加告警服务
   * @param {*} ctx
   */
  static async addAlert(ctx) {
    let ret = {}
    await Fetch.post({
      url: '/scheduler-job/alert',
      ctx,
      params: ctx.request.body,
      urlPrefix: 'monitor'
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 告警服务详情
   * @param {*} ctx
   */
  static async alertDetail(ctx) {
    let ret = {}
    if (ctx.request.method === 'GET') {
      await Fetch.get({
        url: ctx.urlHandle(),
        ctx,
        urlPrefix: 'monitor'
      }).then((res) => {
        ret = res
      }).catch((err) => {
        ctx.errorHandle(ctx, err)
      })
    } else if (ctx.request.method === 'DELETE') {
      await Fetch.delete({
        url: ctx.urlHandle(),
        ctx,
        urlPrefix: 'monitor'
      }).then((res) => {
        ret = res
      }).catch((err) => {
        ctx.errorHandle(ctx, err)
      })
    }
    ctx.body = ret
  }

  /**
   * 更新告警服务
   * @param {*} ctx
   */
  static async updateAlert(ctx) {
    let ret = {}
    await Fetch.put({
      url: ctx.urlHandle(),
      ctx,
      params: ctx.request.body,
      urlPrefix: 'monitor'
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 一键告警列表
   * @param {*} ctx
   */
  static async oneKeyList(ctx) {
    let ret = {}
    await Fetch.get({
      url: ctx.urlHandle(),
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 一键巡检
   * @param {*} ctx
   */
  static async oneKeyAlert(ctx) {
    let ret = {}
    await Fetch.put({
      url: ctx.urlHandle(),
      ctx,
      urlPrefix: 'monitor'
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 告警历史列表
   * @param {*} ctx
   */
  static async historyList(ctx) {
    let ret = {}
    await Fetch.get({
      url: ctx.urlHandle(),
      ctx,
      urlPrefix: 'monitor',
      params: ctx.request.body
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 改变告警状态
   * @param {*} ctx
   */
  static async changeStatus(ctx) {
    let ret = {}
    await Fetch.post({
      url: ctx.urlHandle(),
      ctx,
      urlPrefix: 'monitor',
      params: ctx.request.body
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }
}
